package com.feemanage.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.common.validate.edit;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.framework.config.BigDecimalSerializer;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 经费卡入账列表
 */
@Data
@TableName("biz_project_income")
public class BizProjectIncome extends myBaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 自增ID
     */
    @TableId(value = "id",type = IdType.ASSIGN_UUID)
    @NotNull(message = "id不能为空", groups = {edit.class})
    private String id;

    /**
     * 银行到款表-财务来款ID
     */
    private String cwIncomeId;

    /**
     * 项目入账表-来款认领ID
     */
    private String cwIncomeClaimId;

    /**
     * 项目ID
     */
    private String projectId;

    /**
     * 经费卡号
     */
    private String feeCardNum;

    /**
     * 本次入账金额
     */
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal incomeFee;

    /**
     * 到账日期
     */
    private LocalDateTime incomeDate;

    /**
     * 经费卡号
     */
    private String cwIncomeCode;

    /**
     * 经费卡负责人姓名
     */
    private String feeChargerName;

    /**
     * 经费卡负责人ID
     */
    private String feeChargerId;

    /**
     * 所在单位ID
     */
    private String unitId;

    /**
     * 审核状态
     */
    private String checkstatus;

    /**
     * 审核日期
     */
    private String checkdate;

    /**
     * 审核人
     */
    private String checker;

    /**
     * 来款单位名称
     */
    private String incomeUnitName;

    /**
     * 来款批次
     */
    private Long incomeBatch;

    /**
     * 对冲号
     */
    private String dch;

    /**
     * 来款类型
     */
    private String incomeType;

    /**
     * 留校金额
     */
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal schoolFee;

    /**
     * 外拨金额
     */
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal outboundFee;

    /**
     * 绩效-万元
     */
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal performanceFee;

    /**
     * 经费分割状态
     */
    private String cutState;

    /**
     * 完成数据状态
     */
    private String completedatastatus;

    /**
     * 分割绩效金额-万元
     */
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal cutPerformanceFee;

    /**
     * 管理费提取方案
     */
    private String feeSchemeId;

    /**
     * 经费卡负责人工号
     */
    private String feeChargerCode;

    /**
     * 经费卡负责人所属单位
     */
    private String feeChargerUnitName;

    /**
     * 批次号
     */
    private String pch;

    /**
     * 数据状态（财务同步）
     */
    private String pushStatus;

    /**
     * 财务对接使用
     */
    private String bizId;

    /**
     * 财务对接使用
     */
    private String bizType;

    /**
     * 经费单号
     */
    private String incomeCode;

    /**
     * 项目名称
     */
    @TableField(exist = false)
    private String projectName;

    /**
     * 项目分类
     */
    @TableField(exist = false)
    private String projectType;

    /**
     * 项目编号
     */
    @TableField(exist = false)
    private String projectCode;
}